package com.shuwen.gcdj.common.annotation;

import com.shuwen.gcdj.common.enums.AuthType;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author hardy.zhang
 * @version V1.0
 * @Package com.shuwen.cssc.common.annotation
 * @date 11/18/21 1:44 PM
 */
/**
 * Auth
 */
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Auth {
    //API操作对象，比如user、org、role等等
    String value() default "";

    //API操作，对应于Constants.LOG_TYPE_XXX
    int action() default 0;

    //调用方身份认证方式
    AuthType[] type() default {AuthType.TOKEN};

    //需要具体权限校验的时候配置，格式为functionCode|optionCode
    //支持通配符  *，functionCode|*
    //只有在AuthType.token AuthToken.DETAILTOKEN 时生效
    String[] codes() default {};
}
